/**
 * 导航栏工具函数
 */

// 预设的导航栏样式
const NAVBAR_STYLES = {
  // 默认样式
  default: {
    backgroundColor: '#ffffff',
    textColor: '#000000'
  },
  // 深色样式
  dark: {
    backgroundColor: '#333333',
    textColor: '#ffffff'
  },
  // 蓝色样式
  blue: {
    backgroundColor: '#1890ff',
    textColor: '#ffffff'
  },
  // 绿色样式
  green: {
    backgroundColor: '#52c41a',
    textColor: '#ffffff'
  },
  // 红色样式
  red: {
    backgroundColor: '#f5222d',
    textColor: '#ffffff'
  },
  // 橙色样式
  orange: {
    backgroundColor: '#fa8c16',
    textColor: '#ffffff'
  },
  // 紫色样式
  purple: {
    backgroundColor: '#722ed1',
    textColor: '#ffffff'
  }
};

/**
 * 获取预设的导航栏样式
 * @param {string} styleName 样式名称
 * @returns {object} 样式配置对象
 */
function getNavbarStyle(styleName) {
  return NAVBAR_STYLES[styleName] || NAVBAR_STYLES.default;
}

/**
 * 创建导航栏配置
 * @param {object} options 配置选项
 * @returns {object} 导航栏配置对象
 */
function createNavbarConfig(options = {}) {
  const {
    title = '',
    style = 'default',
    showBack = false,
    showHome = false,
    customStyle = {},
    position = 'fixed',
    customRender = false,
    showDefaultContent = true
  } = options;

  const baseStyle = getNavbarStyle(style);
  
  return {
    navbarTitle: title,
    navbarBackgroundColor: customStyle.backgroundColor || baseStyle.backgroundColor,
    navbarTextColor: customStyle.textColor || baseStyle.textColor,
    showBack,
    showHome,
    position,
    customRender,
    showDefaultContent
  };
}

/**
 * 创建自定义渲染模式的导航栏配置
 * @param {object} options 配置选项
 * @returns {object} 导航栏配置对象
 */
function createCustomNavbarConfig(options = {}) {
  const {
    backgroundColor = '#ffffff',
    position = 'fixed',
    customRender = true,
    showDefaultContent = false
  } = options;

  return {
    navbarBackgroundColor: backgroundColor,
    position,
    customRender,
    showDefaultContent
  };
}

/**
 * 获取系统状态栏高度
 * @returns {number} 状态栏高度
 */
function getStatusBarHeight() {
  const systemInfo = wx.getSystemInfoSync();
  return systemInfo.statusBarHeight || 0;
}

/**
 * 获取导航栏总高度（状态栏 + 导航栏）
 * @returns {number} 导航栏总高度
 */
function getNavbarHeight() {
  const systemInfo = wx.getSystemInfoSync();
  const menuButtonInfo = wx.getMenuButtonBoundingClientRect();
  return menuButtonInfo.top + menuButtonInfo.height + 10;
}

/**
 * 获取页面内容区域的样式（用于fixed模式下的内容区域）
 * @param {number} navbarHeight 导航栏高度
 * @returns {string} 样式字符串
 */
function getContentStyle(navbarHeight = null) {
  const height = navbarHeight || getNavbarHeight();
  return `padding-top: ${height}px;`;
}

module.exports = {
  NAVBAR_STYLES,
  getNavbarStyle,
  createNavbarConfig,
  createCustomNavbarConfig,
  getStatusBarHeight,
  getNavbarHeight,
  getContentStyle
}; 